import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @authur: 杨亚旭 891217573@qq.com
 * @date: 2019/3/21 17:08
 **/
public class T {

    public static void main(String[] args) {
        List<String> list=new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        Iterator<String> iterator = list.iterator();
        //执行没有问题，可以改变list结构
        while (iterator.hasNext()){
            if(iterator.next().equals("1")){
                iterator.remove();
            }
        }
        //下面会报错 java.util.ConcurrentModificationException，因为foreach语法会进入到arraylist的内部类Itr
        // 他的next（）方法会判断数组长度是否变化，加入元素后，下一次循环时候的next方法就报错了
        //虽然effective java推荐我们使用foreach，但是如果你要改变集合的元素内容就不能使用foreach。
        for(String val:list){
            if(val.equals("2")){
                list.add("4");
            }
        }
    }
}
